[iOS] Xcode 12でSwift Package Managerを使ってFirebaseのAnalyticsがあるとiPhone実機で実行できない
こんにちは。きんくまです。
こんな作業をしています。
Xcode 11でCarthageのみでライブラリ管理を行っていたプロジェクト
-> Xcode 12でSwift Package Manager(SPM) + CocoaPods(SPMで対応できないもの)に移行
Carthageを廃止してSPM + CocoaPodsに移行しているのは、以前参加したセミナーで登壇者の方々がおっしゃってたからです。
Swift開発座談会 2020
作業中にいろいろとハマりましたが、ビルドも成功してシミュレーターで動いた。でもiPhone実機に転送したらエラーになって立ち上げられませんでした。
余談ですがCocoaPodsもXcode 12.0のときはいろいろとあったみたいですが、12.1では問題なく動きました。(正確には数時間ハマったのですが、それはあるライブラリのimport名が変わったことに気がつかなかった、、私だけの問題ですw)
エラー内容
スペック
Xcode 12.1 Firebase SDK 7.4.0
状況
ビルドは成功。実機に転送しようとすると以下のエラーが出る === Unable to install "アプリTarget名" Domain: com.apple.dt.MobileDeviceErrorDomain Code: -402620388 -- No code signature found. Domain: com.apple.dt.MobileDeviceErrorDomain Code: -402620388
回避方法
どうやらXcode 12でFirebase AnalyticsをSPMを使うと起きるみたいです。
参考 https://github.com/firebase/firebase-ios-sdk/blob/master/SwiftPackageManager.md
If you're using FirebaseAnalytics, Xcode 12.0, and have an issue with device installation or archive uploading, see the workaround at https://github.com/firebase/firebase-ios-sdk/issues/6472#issuecomment-694449182.
1: Edit Schemeを開く
2: BuildのPost-actionsに以下を追加
rm -rf "${TARGET_BUILD_DIR}/${TARGET_NAME}.app/Frameworks/FirebaseAnalytics.framework" rm -rf "${TARGET_BUILD_DIR}/${TARGET_NAME}.app/Frameworks/GoogleAppMeasurement.framework"
FIRAnalyticsConnectorがGithubのコメントには書いてあるのですが、ビルドされた.appの中を確認したところ、私のところには入ってなかったので入れてません。
3: Provide build settings from のところをアプリのTargetを選択しておく(忘れたらうまくいきませんでした!)
ステージング環境と本番環境でSchemeを分けている場合などは、全部に設定しておきます。
この状態で実機に転送すると今度はうまくいきました!やったね